package com.zzy.jkb;

import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.generator.FastAutoGenerator;
import com.baomidou.mybatisplus.generator.config.OutputFile;
import com.baomidou.mybatisplus.generator.config.TemplateType;
import com.baomidou.mybatisplus.generator.engine.FreemarkerTemplateEngine;

import java.util.Collections;

/**
 * @ClassName Generator
 * @Author ITOD011
 * @Description TODO
 * @Date 2023/2/2 14:05
 **/
public class Generator {

    public static void main(String[] args) {
        String projectRootDir = System.getProperty("user.dir");
        FastAutoGenerator.create("jdbc:mysql://114.115.206.230:3306/jkb?useUnicode=true&characterEncoding=UTF-8&serverTimezone=Asia/Shanghai", "root", "3362213")
                .globalConfig(builder -> {
                    builder.author("zzy") // 设置作者
                            .enableSwagger() // 开启 swagger 模式
                            .fileOverride() // 覆盖已生成文件 已过期 3.5.2已弃用
                            //.disableOpenDir() //禁止打开生成目录
                            .outputDir(projectRootDir+"/src/main/java"); // 指定输出目录
                })
                .packageConfig(builder -> {
                    builder.parent("com.zzy") // 设置父包名
                            .moduleName("jkb") // 设置父包模块名
                            .pathInfo(Collections.singletonMap(OutputFile.xml, projectRootDir+"/src/main/resources/mapper")); // 设置mapperXml生成路径
                })
                .strategyConfig(builder -> {
                    builder.addInclude("notification"); // 设置需要生成的表名
//                            .addTablePrefix("pms_"); // 设置过滤表前缀
                    builder.entityBuilder().idType(IdType.ASSIGN_UUID).enableLombok().fileOverride();//实体类可覆盖
                })
                .templateConfig(builder->{
                    //builder.disable(); 禁止所有模板
                    //builder.disable(TemplateType.CONTROLLER);//禁止生成控制层
                })
                .templateEngine(new FreemarkerTemplateEngine()) // 使用Freemarker引擎模板，默认的是Velocity引擎模板
                .execute();
    }
}
